package com.wrial.offer;
/*
 * @Author  Wrial
 * @Date Created in 21:16 2020/4/1
 * @Description  二叉搜索树的最近公共祖先  因此左小右大
 */

public class FaceTest_68_I {

    // 递归思想，将大树化为小树，若不在同侧那就是root，在同侧就向下递归
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if(root == null) return null;
        // 公共祖先可以是同一个节点（如果q p相同的话）
        if (p.val == q.val) return p;
        if (p.val < root.val && q.val <root.val) return lowestCommonAncestor(root.left, p, q);
        if (p.val > root.val && q.val >root.val) return lowestCommonAncestor(root.right, p, q);
        return root;
    }

    public class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode(int x) {
            val = x;
        }
    }
}
